package com.xl.controller;

import com.xl.service.StudyExcelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@RestController
@RequestMapping("/excel")
public class StudyExcelController {

    @Autowired
    private StudyExcelService excelService;

    /**
     * 下载excel模板
     * 1 指定某几列为下拉选择，并指定下拉选择的内容
     * 2 指定某一列输入的格式为string格式，防止用户输入0011 变为 11
     */
    @GetMapping("/downloadTemplate")
    public void downloadTemplate(HttpServletResponse httpServletResponse) throws IOException {
        excelService.downloadTemplate(httpServletResponse);
    }

    /**
     * 导出输入：
     * 1 导出的时候在数据上方显示一下搜索的条件
     * 实现思路，数据导出到sheet之后，让sheet中的数据整理向下移动几行，并且在新的行中显示搜索条件
     * 这里以搜索条件
     */
    @GetMapping("/exportShowMsg")
    public void export(HttpServletResponse response, String deviceName) {
        excelService.export(response, deviceName);
    }

    /**
     * 简单导出，直接导出所有数据，不显示查询条件
     */
    @PostMapping("/exportDirect")
    public void exportDirect(HttpServletResponse response) {
        excelService.exportDirect(response);
    }

    /**
     * 批量导入，需要考虑到，
     * 1 表格表头的校验
     * 2 模板里面使用了下拉菜单(string) ，但是数据库里面存储的是类型的代码(int)
     */
    @PostMapping("/import")
    public void importByExcel(MultipartFile file) {
        excelService.importAndParseExcel(file, true);
    }

}
